//
// imag - the personal information management suite for the commandline
// Copyright (C) 2015, 2016 Matthias Beyer <mail@beyermatthias.de> and contributors
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; version
// 2.1 of the License.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
//

generate_error_module!(
    generate_error_types!(EmailError, EmailErrorKind,
        StoreReadError  => "Store read error",
        StoreWriteError => "Store write error",

        FileLockEntryHeaderWriteError => "Error writing FileLockEntry Header",

        EmailError              => "Error processing email",
        EmailParseError         => "Couldn't parse Email",
        EmailHeaderParseError   => "Couldn't read Header of Email",

        EmailHeaderErrorMissingFieldFrom      => "Missing From field in Email header",
        EmailHeaderErrorMissingFieldMsgId     => "Missing MsgId field in Email header",
        EmailHeaderErrorMissingFieldTo        => "Missing To field in Email header",
        EmailHeaderErrorMissingFieldDate      => "Missing Date field in Email header",
        EmailHeaderErrorMissingFieldInReplyTo => "Missing In-Reply-To field in Email header",

        CannotCreateRef     => "Cannot create reference to file"
    );
);

pub use self::error::EmailError;
pub use self::error::EmailErrorKind;
pub use self::error::MapErrInto;

